import json

class JSONHandler:
    def __init__(self, file_path):
        """
        初始化JSON文件处理器
        :param file_path: JSON文件的路径
        """
        self.file_path = file_path

    def read(self):
        """
        读取JSON文件并返回Python对象
        :return: 返回字典或列表，如果文件不存在或格式错误则返回None
        """
        try:
            with open(self.file_path, 'r', encoding='utf-8') as file:
                return json.load(file)
        except FileNotFoundError:
            print(f"文件 {self.file_path} 不存在")
            return None
        except json.JSONDecodeError as e:
            print(f"JSON文件格式错误: {e}")
            return None

    def write(self, data, indent: int = 4, ensure_ascii: bool = False) -> bool:
        """
        将Python对象写入JSON文件
        :param data: 要写入的Python对象（字典或列表）
        :param indent: 缩进空格数，默认为4
        :param ensure_ascii: 是否确保ASCII字符，默认为False（支持中文）
        :return: 成功返回True，失败返回False
        """
        try:
            with open(self.file_path, 'w', encoding='utf-8') as file:
                json.dump(data, file, indent=indent, ensure_ascii=ensure_ascii)
            return True
        except Exception as e:
            print(f"写入文件时出错: {e}")
            return False

    def update(self, key, new_value) -> bool:
        """
        更新JSON文件中指定键的值
        :param keys: 要更新的键
        :param new_values: 对应键的新值
        :return: 成功返回True，失败返回False
        """
        current_data = self.read()
        if current_data is None:
            return False
        if not isinstance(current_data, dict):
            print("当前JSON文件不是字典类型，无法更新")
            return False

        current_data[key] = new_value

        # 将更新后的数据写回文件
        return self.write(current_data)
